<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of user
 *
 * @author Dmitry
 */
class Models_User extends Access_Db{
    //put your code here
    var $error = array() ;
    public function isValid($login,$email,$pass)
    {
        if(!preg_match("/^[a-zA-Z0-9]+$/",$login))
        {
            $this->error[] = 'Ім\'я користувача може складатися тільки з латиниці і цифр!';
        }
        
        if(!filter_var($email, FILTER_VALIDATE_EMAIL))
        {
            $this->error[] = 'Невірна адреса електронної скриньки!' ;
        }
        
        if(strlen($login) < 6 or strlen($login) > 50)
        {
            $this->error[] = 'Ім\'я користувача повинно бути не менше 6 і не більше 50 символів!';
        }
        
        if(strlen($pass) < 6 or strlen($pass) > 50)
        {
            $this->error[] = 'Пароль повинен бути не менше 6 і не більше 50 символів!';
        }
        
        
        if(mysql_result($this->executeQuery('SELECT COUNT(ID)
                                             FROM yyUsers
                                             WHERE login=\'' . mysql_real_escape_string($login) . '\''), 0) > 0)
        {
            $this->error[] = "Користувач з таким ім'ям вже існує!";
        }
        
        if(mysql_result($this->executeQuery('SELECT COUNT(ID)
                                             FROM yyUsers
                                             WHERE email=\'' . mysql_real_escape_string($email) . '\''), 0) > 0)
        {
            $this->error[] = "Користувач з такою почтою вже існує!";
        }
        
        if(count($this->error) == 0)
        {
            return TRUE;
        } return $this->error;
    }
    
    public function setUser($login,$pass,$email,$group=2)
    {
        $pass = md5(md5(trim($pass)));
        
        mysql_query("INSERT INTO yyUsers (ID,login,pass,email,groupID)
                     VALUES (NULL,'$login','$pass','$email','$group')");
        header('Location: /' . $this->path) ;
    }
    
    public function genCode($length=6) 
    {
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ0123456789";
        $code = "";
        $clen = strlen($chars) - 1;  
        while (strlen($code) < $length) 
        {
            $code .= $chars[mt_rand(0,$clen)];  
        }
        return $code;
    } 
    
    public function authUser($login,$pass)
    {
        $result = mysql_fetch_assoc($this->executeQuery("SELECT ID, pass, login
                                                         FROM yyUsers
                                                         WHERE login='" . mysql_real_escape_string($login) . "' LIMIT 1")) ;
        if ($result['pass'] === md5(md5($pass)))
        {
            $hash = md5($this->genCode()) ;
            $this->executeQuery('UPDATE yyUsers
                                 SET hash=\'' . $hash . '\'
                                 WHERE ID=' . $result['ID']) ;
            setcookie("ID", $result['ID'], time()+3600*24*30);
            setcookie("hash", $hash, time()+3600*24*30);
            setcookie("name", $result['login'], time()+3600*24*30);
            
            
            session_start() ;
            $_SESSION['cart']['count'] = 0 ;
            
            header("Location: /$this->path" . "user") ;
            
            
        } else {
            header("Location: /$this->path" . "user/pass") ;
        }
        
    }
    
    public function isAuth()
    {
        if (isset($_COOKIE['ID']) and isset($_COOKIE['hash']))
        {   
            $result = $this->executeQuery("SELECT ID,hash,login,email
                                            FROM yyUsers
                                            WHERE ID=" . $_COOKIE['ID']) ;
            $row = mysql_fetch_assoc($result) ;
            //=====================
            if(($row['hash'] !== $_COOKIE['hash']))
            //====================    
            {
                $this->out() ;
                header("Location: /$user->path" . "in") ;
            } else {
                
                    
                    header("Location: /$user->path"."user") ;
                
            }
        } 
    }
    
    public function out()
    {
                setcookie("ID", "", time() - 3600*24*30*12) ;
                setcookie("hash", "", time() - 3600*24*30*12) ;
                setcookie("name", "", time()- 3600*24*30) ;
                session_destroy() ;
    }
}

